Skip to content

feat: emit legacy assessment hints as QTI catalog-info#6034

Merged
rtibbles merged 1 commit into
learningequality:unstablefrom
rtibblesbot:issue-6011-f3b0aa
Jul 9, 2026
Merged

feat: emit legacy assessment hints as QTI catalog-info#6034
rtibbles merged 1 commit into
learningequality:unstablefrom
rtibblesbot:issue-6011-f3b0aa

Conversation

@rtibblesbot

@rtibblesbot rtibblesbot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Summary

Legacy assessment items carry progressively-revealed hints that the QTI generator dropped, so published QTI exercises lost them entirely. This emits each hint into the generated QTI item as a dormant qti-catalog-info catalog of support="ext:kolibri-hint" cards — content the QTI 3.0 schema excludes from default delivery, so Kolibri can render it while stock players ignore it. Hint markdown reuses the existing render pipeline, so hint images are claimed by the existing file-dependency scan; items with no usable hints emit no catalog element.

References

Closes #6011. Follows #6031 (shared legacy→QTI conversion) and #6032.

Reviewer guidance

  • contentcuration/contentcuration/utils/assessment/qti/convert.py_create_catalog_info sorts hints by "order" and skips text-less hints inside a try/except; confirm a malformed hint (missing/incomparable order, null text) cannot raise and abort the whole channel publish.
  • contentcuration/contentcuration/utils/assessment/qti/assessment_item.py:238catalog_info is declared between item_body and response_processing, and field order is XML element order; confirm this placement keeps the item XSD-valid.
  • contentcuration/contentcuration/utils/assessment/qti/ingest.py:32 — hints are placeholder-stripped like answers before conversion; check the ricecooker path handles an absent "hints" key without error.

AI usage

Used Claude Code to implement this against a pre-approved plan with test-driven development. Verified with the scoped QTI test suite, the DB-backed exercise-creation tests, flake8, and the pre-commit hook chain.


@rtibblesbot's comments are generated by an LLM, and should be evaluated accordingly

How was this generated?
  • Ran pre-flight CI checks (lint, format, tests) and verified all pass
  • Rebased onto the target branch and resolved any conflicts
  • Reorganized commit history into clean, logical commits
  • Audited the diff to ensure only issue-relevant files are changed
  • Built PR body from the repository's PR template with evidence blocks
@rtibblesbot

🟡 Waiting for feedback

Last updated: 2026-07-09 21:46 UTC

Legacy assessment items carry progressively-revealed hints
(AssessmentItem.hints) that the QTI generator dropped. Emit them into
the generated QTI item as a dormant qti-catalog-info catalog of
support="ext:kolibri-hint" cards - content the QTI 3.0 schema excludes
from default delivery - so Kolibri can render them while default players
ignore them.

One qti-card per hint in display order, hint markdown converted to HTML
via the existing render pipeline (so hint images are claimed by the
existing file-dependency scan). Items with no usable hints emit no
qti-catalog-info. Wired through both the webapp publish path (archive.py)
and the ricecooker ingest path (ingest.py). Malformed hints are logged
and skipped rather than aborting the channel publish.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@rtibblesbot rtibblesbot marked this pull request as ready for review July 9, 2026 21:46

@rtibbles rtibbles left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes are to spec, good test coverage of the changes.

@rtibbles rtibbles merged commit dd5f5d7 into learningequality:unstable Jul 9, 2026
34 checks passed
@rtibblesbot rtibblesbot deleted the issue-6011-f3b0aa branch July 9, 2026 22:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[QTI] Carry legacy hints into generated QTI items as dormant catalog content

2 participants